package site.ruolin.KeyGen.Key;

import java.math.BigInteger;

/**
 * 公钥
 * @author ruolin on 2025/09/11
 * 包含公钥参数 n 和 g
 */
public class PublicKey {
    private final BigInteger n;
    private final BigInteger g;
    private final BigInteger nSquare;

    /**
     * 构造函数
     * @param n 公钥参数 n
     * @param g 公钥参数 g
     */
    public PublicKey(BigInteger n, BigInteger g) {
        this.n = n;
        this.g = g;
        this.nSquare = n.multiply(n);
    }

    /**
     * 获取公钥参数 n
     * @return 公钥参数 n
     */
    public BigInteger getN() {
        return n;
    }

    /**
     * 获取公钥参数 g
     * @return 公钥参数 g
     */
    public BigInteger getG() {
        return g;
    }

    /**
     * 获取 n^2
     * @return n^2
     */
    public BigInteger getNSquare() {
        return nSquare;
    }
}
